#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>


//int main() {
//	int money = 20;
//	int entmp = 20;
//	int tayp = 20;
//
//	while (entmp >= 2) {
//		tayp += entmp / 2;
//		entmp = entmp / 2 + entmp % 2;
//	}
//	printf("%d\n", tayp);
//
//	return 0;
//}

//int main() {
//	int n = 0;
//	scanf("%d", &n);
//	int arr[n][n];
//	int i = 0;
//	int j = 0;
//	for (i = 0;i < n;i++) {
//		for (j = 0;j < n;j++) {
//			scanf("%d", &arr[i][j]);
//		}
//	}
//	int flag = 1;
//	for (i = 0;i < n;i++) {
//		for (j = 0;j < i;j++) {
//			if (arr[i][j] != 0) {
//				flag = 0;
//				goto end;
//			}
//		}
//	}
//end:
//	if (flag == 1) {
//		printf("YES\n");
//	}
//	else {
//		printf("NO\n");
//	}
//	return 0;
//}

//int main() {
//	int n = 0;
//	scanf("%d ", &n);
//	int arr[n][n];
//	int i = 0;
//	int j = 0;
//	for (i = 0;i < n;i++) {
//		for (j = 0;j < n;j++) {
//			scanf("%d ", &arr[i][j]);
//		}
//	}
//	for (i = 0;i < n;i++) {
//		for (j = 0;j < n;j++) {
//			if (i < j) {
//				if (arr[i][j] != 0) {
//					printf("NO\n");
//					return 0;
//				}
//			}
//		}
//	}
//	printf("YES\n");
//	return 0;
//}

int main() {
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int arr1[n][n];
	int arr2[m][m];
	int i = 0;
	int j = 0;
	for (i = 0;i < n;i++) {
		for (j = 0;j < m;j++) {
			scanf("%d", &arr1[i][j]);
		}
	}
	for (i = 0;i < n;i++) {
		for (j = 0;j < m;j++) {
			scanf("%d", &arr2[i][j]);
		}
	}
	int flag = 1;
	for (i = 0;i < n;i++) {
		for (j = 0;j < m;j++) {
			if (arr1[i][j] != arr2[i][j]) {
				flag = 0;
				goto end;
			}
		}
	}
end:
	if (flag == 1) {
		printf("Yes\n");
	}
	else {
		printf("No\n");
	}
	return 0;
}